package com.william.jdbcplus.test.util;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Properties;

/**
 * 对属性文件操作的工具类 获取，新增，修改 注意： 以下方法读取属性文件会缓存问题,在修改属性文件时，不起作用
 *
 * @author NiLW 2016-09-14
 * @version 3.0v
 */
public class PropertiesUtil {
    /**
     * 获取属性文件的数据 根据key获取值
     *
     * @param fileName 文件名　(注意：加载的是src下的文件,如果在某个包下．请把包名加上)
     * @param key      属性名
     * @return
     */
    public static String getPropertiesKey(String fileName, String key) {
        try {
            Properties prop = getProperties(fileName);
            return prop.getProperty(key);
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 返回是否存在属性
     *
     * @param fileName 文件名　(注意：加载的是src下的文件,如果在某个包下．请把包名加上)
     * @param key      属性名
     * @return
     */
    public static boolean containsKey(String fileName, String key) {
        try {
            Properties prop = getProperties(fileName);
            return prop.containsKey(key);
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 返回　Properties
     *
     * @param fileName 文件名　(注意：加载的是src下的文件,如果在某个包下．请把包名加上)
     * @return
     */
    private static Properties getProperties(String fileName) {
        Properties prop = new Properties();
        String savePath = PropertiesUtil.class.getResource(fileName).getPath();
        try {
            InputStream in = new BufferedInputStream(new FileInputStream(savePath));
            prop.load(in);
        } catch (Exception e) {
            return null;
        }
        return prop;
    }

    public static void main(String[] args) {
        Properties prop = getProperties("/config.properties");
        try {
            Iterator<Entry<Object, Object>> itr = prop.entrySet().iterator();
            while (itr.hasNext()) {
                Entry<Object, Object> e = (Entry<Object, Object>) itr.next();
                System.err.println((e.getKey().toString() + " = " + e.getValue().toString()));
            }
        } catch (Exception e) {

        }
    }
}
